home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1994 January / PSL Monthly Shareware CD-ROM (Public Software Library) (January 1994).iso / games / dos / kids / numtime.bas < prev    next >
Encoding:
BASIC Source File  |  1988-04-05  |  4.2 KB  |  143 lines

  1. 1000 '   *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
  2. 1010 '   =
  3. 1020 '   =         ***TELLTIME***             =
  4. 1030 '   =                                    =
  5. 1040 '   *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--==*
  6. 1050 '
  7. 1060 '
  8. 1070 '   *** SETUP ***
  9. 1080 '
  10. 1090 DEFINT A-Z: DEFSNG P
  11. 1100 KEY OFF: SCREEN 1, 0, 0, 0: COLOR 0, 1
  12. 1110 PI = 3.141593
  13. 1120 RANDOMIZE VAL(MID$(TIME$, 7))
  14. 1130 '
  15. 1140 '   *** Randomly selects time to draw ***
  16. 1150 '
  17. 1160 HR = RND * 12 MOD 12 + 1
  18. 1170 MIN = (HR + RND * 11 MOD 11) MOD 12 + 1
  19. 1180 '
  20. 1190 '   ***Draw graphics ***
  21. 1200 '
  22. 1210 CLS
  23. 1220 CIRCLE (230, 100), 2, 3
  24. 1230 CIRCLE (230, 100), 80, 1
  25. 1240 H = (15 - HR) MOD 12
  26. 1250 HANGLE! = H * -2 * PI / 12 + (MIN + 12 * (MIN > 6)) * PI / 72
  27. 1260 IF HANGLE! > 0 THEN HANGLE! = HANGLE! - 2 * PI
  28. 1270 CIRCLE (230, 100), 50, 1, HANGLE! + .02, HANGLE! - .02
  29. 1280 M = (15 - MIN) MOD 12
  30. 1290 MANGLE! = M * -2 * PI / 12
  31. 1300 CIRCLE (230, 100), 70, 2, MANGLE! + .02 + 2 * PI * (M = 0), MANGLE! - .02
  32. 1310 '
  33. 1320 '   *** Print title of program and numbers on face ***
  34. 1330 '
  35. 1340 LOCATE 2, 17: PRINT "TELLTIME"
  36. 1350 LOCATE 4, 29: PRINT "12"
  37. 1360 LOCATE 5, 24: PRINT "11": LOCATE 5, 35: PRINT "1"
  38. 1370 LOCATE 9, 19: PRINT "10": LOCATE 9, 39: PRINT "2"
  39. 1380 LOCATE 13, 19: PRINT "9": LOCATE 13, 40: PRINT "3"
  40. 1390 LOCATE 17, 20: PRINT "8": LOCATE 17, 39: PRINT "4"
  41. 1400 LOCATE 21, 24: PRINT "7": LOCATE 21, 35: PRINT "5"
  42. 1410 LOCATE 22, 30: PRINT "6"
  43. 1420 '
  44. 1430 '   ***Randomly arranges the time choices ***
  45. 1440 '
  46. 1450 C = RND * 3 MOD 3 + 1
  47. 1460 ch(C) = HR
  48. 1470 cm(C) = MIN
  49. 1480 D = (C + RND * 2 MOD 2) MOD 3 + 1
  50. 1490 ch(D) = MIN
  51. 1500 cm(D) = HR
  52. 1510 E = 6 - C - D
  53. 1520 ch(E) = HR
  54. 1530 cm(E) = 12 - MIN
  55. 1540 IF cm(E) MOD 6 = 0 THEN cm(E) = cm(E) + 6
  56. 1550 '
  57. 1560 '   ***Print three possible answers ***
  58. 1570 '
  59. 1580 LOCATE 6, 1: PRINT "WHAT TIME IS IT?"
  60. 1590 FOR j = 1 TO 3
  61. 1600 LOCATE j * 4 + 6, 1
  62. 1610 PRINT "("; CHR$(64 + j); ")";
  63. 1620 GOSUB 2130
  64. 1630 NEXT
  65. 1640 LOCATE 24, 2: PRINT "  HIT KEY A, B, or C"; : LOCATE 24, 27:                    PRINT "(ESC TO EXIT)";
  66. 1650 RESP$ = INKEY$: IF RESP$ = "" THEN 1660 ELSE IF RESP$ = CHR$(27) THEN GOTO 2250 ELSE GOTO 1670
  67. 1660 FOR A = 1 TO 300: NEXT
  68. 1665 SOUND 18000, .03
  69. 1666 GOTO 1650
  70. 1670 LOCATE 24, 1: PRINT SPC(39);
  71. 1680 ANS = (ASC(RESP$) OR 32) - 96
  72. 1690 IF ANS > 0 AND ANS < 4 THEN 1810
  73. 1700 '
  74. 1710 '   ***Unacceptable input rejected ***
  75. 1720 '
  76. 1730 LOCATE 24, 1: PRINT " A, B, or C, PLEASE";
  77. 1740 FOR j = 1 TO 6
  78. 1750 SOUND 50 * (j MOD 2 + 1), 5
  79. 1760 NEXT
  80. 1770 GOTO 1640
  81. 1780 '
  82. 1790 '   *** Acceptable input, draw eyes and mouth ***
  83. 1800 '
  84. 1810 CIRCLE (200, 85), 20, 1 - (ANS <> C), 3 * PI / 8, 5 * PI / 8
  85. 1820 CIRCLE (260, 85), 20, 1 - (ANS <> C), 3 * PI / 8, 5 * PI / 8
  86. 1830 IF ANS = C THEN 1980
  87. 1840 '
  88. 1850 '   ***Wrong answer routine ***
  89. 1860 '
  90. 1870 SOUND 40, 40
  91. 1880 CIRCLE (230, 200), 80, 1, (3 * PI / 8), (5 * PI / 8)
  92. 1890 LOCATE 23, 1: PRINT SPC(6); CHR$(ANS + 64); " IS WRONG       "
  93. 1900 PRINT "THE CORRECT ANSWER IS "; CHR$(64 + C);
  94. 1910 FOR j = 1 TO 6000
  95. 1920 NEXT
  96. 1930 NUMWRONG = NUMWRONG + 1
  97. 1940 GOTO 1160
  98. 1950 '
  99. 1960 '   ***Right answer routine ***
  100. 1970 '
  101. 1980 LOCATE 24, 1
  102. 1990 j = 0
  103. 2000 FLG = 0
  104. 2010 PRINT "CORRECT!!!!";
  105. 2020 CIRCLE (230, 100), 50, 2, (10 * PI / 8), (14 * PI / 8)
  106. 2030 FOR j = 1000 TO 4000 STEP 80
  107. 2040 SOUND j, .04
  108. 2050 NEXT
  109. 2060 FOR j = 1 TO 2000
  110. 2070 NEXT
  111. 2080 NUMRIGHT = NUMRIGHT + 1
  112. 2090 GOTO 1160
  113. 2100 '
  114. 2110 '   ***Time printing subroutine ***
  115. 2120 '
  116. 2130 IF cm(j) = 12 THEN 2200
  117. 2135 cm5(j) = cm(j)
  118. 2140 IF cm(j) > 6 THEN ch1(j) = ch(j) - 1 ELSE ch1(j) = ch(j)
  119. 2150 cm55 = (cm5(j) * 5)
  120. 2155 IF ch1(j) = 0 THEN ch1(j) = 12
  121. 2156 IF cm55 = 5 THEN 2195
  122. 2160 PRINT ch1(j); ":"; cm55
  123. 2190 GOTO 2210
  124. 2195 cm55$ = "05"
  125. 2196 PRINT ch1(j); ":"; cm55$
  126. 2197 GOTO 2210
  127. 2200 PRINT ch(j); "O'CLOCK ";
  128. 2210 RETURN
  129. 2220 '
  130. 2230 '   ***Ending program ***
  131. 2240 '
  132. 2250 CLS : LOCATE 12, 10
  133. 2260 IF NUMRIGHT < NUMWRONG THEN 2280
  134. 2270 PRINT "VERY GOOD,you answered": GOTO 2290
  135. 2280 PRINT "TOO BAD, you answered"
  136. 2290 LOCATE 13, 10: PRINT NUMRIGHT; "right and"; NUMWRONG; "wrong.";
  137. 2300 FOR j = 1 TO 3500: NEXT j
  138. 2310 LOCATE 20, 18: PRINT "BYE !"
  139. 2320 PLAY "MB T120 O4 L16 G P64 L14 C E L8 G"
  140. 2330 FOR j = 1 TO 1000: NEXT j
  141. 2340 SYSTEM
  142.  
  143.